iT邦幫忙

1

如何使用 VMware Converter 進行 P2V Linux 虛擬化

  • 分享至 

  • xImage
  •  

今天來聊聊筆者 P2V 虛擬化的經驗好了,我在 IC 封測廠救火的日子。

好的 Infrastructure Administrator 真的很難找,因為工作特性與其他 IT 職務不一樣,並沒有辦法規畫一套有效的培訓方式來進行養成。

如果有人問我如何培養好的 Infrastructure Administrator?

不要懷疑真的是這樣,因為你每天遇到的問題永遠不一樣。

光是硬體故障來說,筆者統計每季平均都 10 件以上。

各種廠牌的 Server 與 Stroage 故障次數,該死的 Dell PE R7X。

各種不同的故障類型的統計

由於筆者任職期間公司營運不佳,需要處理的設備幾乎的是過保的。

只有核心系統才會買硬體保固,最好下班去附近的土地公廟拜拜一下。

不行,這工作實在是太雷了,必須對高風險伺服器進行汰舊。

於是筆者就便提出了改善,針對超過十年以上之高風險伺服器進行汰舊,避免因硬體故障無法救援,造成資料損毀之風險。

執行步驟如下:

  • 先可行性評估與試轉作業,確認轉換所需時間與風險。
  • 協同系統負責人確認試轉環境是否可用及協調可停機時間

藉由這一次的專案進行大量的 P2V ,同時也把 Hyper-V 與 Xen-Server 的 VM 進行 V2V,把公司的虛擬化平台統一為 VMware vSphere。

Linux P2V 虛擬化
由於 Windows 的 P2V 沒有甚麼技術含金量,在此就不多做少紹。

Linux 的 P2V 就非常吃人品了,運氣好的轉完就開起來了,運氣不好的毛病一大堆。

筆者就挑一件比較特別的案例跟大家分享:

  • 該實體機系統碟 (RAID1) 故障,更換硬碟後無法正常重建。
  • iDRAC6 無法查看磁碟陣列狀態
  • 重要報表伺服器無法重開,必須進行不停機轉換。
  • 裡面的 Oracle 資料庫無備份
  • 管理員已經不知道安裝了哪些應用程式

第一件事情,想當然耳,管理員你他媽趕快給我做資料庫備份阿。

MegaCli
由於無法透過 iDRAC 來確認 RAID 的狀態,我們需要在 Linux 上安裝 MegaCli 來直接查詢 RAID。

下載 MegaCLI 2.x 版,請至 LSI Corporation 下載 2.00.12_Linux_Cli.zip

wget http://www.lsi.com/DistributionSystem/AssetDocument/support/downloads/megaraid/miscellaneous/linux/2.00.12_Linux_Cli.zip

解壓縮 2.00.12_Linux_Cli.zip

unzip 2.00.12_Linux_Cli.zip
Archive:  2.00.12_Linux_Cli.zip

   extracting: MegaCliLin.zip

   inflating: 2.00.12_Linux_Cli.txt

解壓縮 MegaCliLin.zip

unzip MegaCliLin.zip
Archive:  MegaCliLin.zip

   inflating: MegaCli-2.00.12-1.i386.rpm

安裝 MegaCli RPM

rpm -ivh MegaCli-2.00.12-1.i386.rpm
 Preparing...                ################################## [100%]

    1:MegaCli               ################################## [100%]

在開始使用 MegaCli 之前有些名詞我們必須先了解

  • Virtual Drive (VD):多顆硬碟組合起來的虛擬硬碟,簡單說就是 RAID。
  • VD State Optimal:RAID 狀態為正常
  • VD State Degraded:RAID 狀態為不正常 (退化、降級)
  • Physical Drive (PD):實體硬碟,簡單說就是主機上有幾顆硬碟。
  • PD State Online:實體硬碟狀態為正常
  • PD State Fail、Unconfigured:實體硬碟狀態為不正常 (失敗、未設)
  • PD State Rebuild:實體硬碟狀態為重建中

查看 RAID 狀態指令

#查看 Raid Card 型號、Disk 相關資訊
/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL

#關於 Raid Card 功能詳細內容
/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL

可透過下面的 Script 查看 VD 及 PD 的狀態

#!/bin/sh
#$Id: check_perc5i.sh, v0.2 2008/4/15 weithenn Exp $
#Check RAID Card PERC 5/i VD and PD State
#CentOS 32 bit use command MegaCli
#CentOS 64 bit use command MegaCli64

HOSTNAME=`/bin/hostname`
CARD=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL |grep "Product Name" | cut -d ':' -f2`
VDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "State"`
VDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Degraded"`
VDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "  Offline"`
PDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Online" | wc -l | sed 's/       //'`
PDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Rebuild" | wc -l | sed 's/       //'`
PDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Critical Disks"`
PDSTATE4=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Failed Disks"`

echo "##### Host Informationi #####"
echo "Host              : $HOSTNAME"
echo "Raid Card         :$CARD"
echo ""
echo "##### Virtual Disk State #####"
echo "Virtual Disk $VDSTATE1"
echo "$VDSTATE2"
echo "$VDSTATE3"
echo ""
echo "##### Physical Disk State #####"
echo "Online Disk       : $PDSTATE1"
echo "Rebuild Disk      : $PDSTATE2"
echo "$PDSTATE3"
echo "$PDSTATE4"

可看到 VD 狀態為 Degraded

./check_perc5i.sh
##### Host Informationi #####
Host              : your_hostname
Raid Card         : PERC 6/i Integrated

##### Virtual Disk State #####
Virtual Disk State               : Degraded
Foreign State: None
State               : Optimal
Foreign State: None
Foreign State: None
Foreign State: None
Foreign State: None
  Degraded        : 1
  Offline         : 0

##### Physical Disk State #####
Online Disk       : 5
Rebuild Disk      : 0
  Critical Disks  : 0
  Failed Disks    : 0

Auto Rebuild 是有啟動的,但卡在 30% 好幾天了。

/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL | grep Rebuild
Rebuild Rate  : 30%
Auto Rebuild : Enabled
Rebuild Rate  : Yes
Force Rebuild : Yes

Linux Hot P2V
由於是重要報表伺服器無法重開,必須進行不停機轉換。先使用 Hot P2V 評估可行性與試轉作業,確認轉換所需時間與風險。

vCenter Converter 在轉換過程中會部署一台 Helper VM

Helper VM 會透過 SSH,並開始從來源檢索所選資料。

轉換之前確認作業系統資訊

ls -l /etc/*-release
-rw-r--r-- 1 root root 64 Jul 26  2011 /etc/enterprise-release
-rw-r--r-- 1 root root 32 Jul 26  2011 /etc/oracle-release
-rw-r--r-- 1 root root 54 Jul 26  2011 /etc/redhat-release

查看發行版本,想辦法取得相同版本的安裝映像。

cat /etc/oracle-release
Oracle Linux Server release 5.7

查看 Kernel 版本

uname -a
Linux your_hostname 2.6.32-200.13.1.el5uek #1 SMP Wed Jul 27 21:02:33 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

vCenter Converter
點選 Convert Machine

填入欲轉換 Linux 的 IP 與 root 帳號密碼

填入想要 P2V 到哪一台 ESXi 的 IP 與 root 帳號密碼

根據自己的 ESXi 版本調整 Virtual Machine Version

編輯 Data to Copy

硬碟要確定是 Maintain Size

Disk Controller 選擇 SCSI LSI Logic

不要勾選 Reconfigue Destination Virtual Machine

指派 Helper VM 使用的 IP 與 DNS

按下 Finish 之後,等待轉換完成。

Performing Post-Converter Activities
轉換完不要急著開機先做一次快照,因為不知道接下來會發生甚麼事。

進行開機,噴出 Error loading operation system。

主要原因為轉換後的 GRUB 未正確寫入開機磁碟,需要透過同版本的 Linux 光碟進入 Rescue Mode 來修復。

強制執行 BIOS 設定

進 BIOS 更改開機順序

光碟開機後,透過 F5-Rescue 來修復系統。

輸入 linux rescue 進入修復模式

選擇 English 語言

選擇 US 鍵盤語系

只是救援修復用,所以停用網卡。

選擇 Continue

原系統已掛載在 /mnt/sysimage 底下,我們就可以接著進行修復,重新安裝 GRUB。

先用 fdisk -l 確認一下開機硬碟

順序是 /dev/sda1 第一顆硬碟,透過以下指令將 GRUB 重新安裝在第一顆硬碟。

chroot /mnt/sysimage
grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

然後進行重開機,噴出 Unable to access resume device (LABEL=SWAP-sda2)。

同樣進入救援模式,先用 fdisk -l 確認一下 SWAP 是 /dev/sda2 沒錯。

再透過 blkid 取得硬碟 UUID 資訊

重新建立 SWAP 分區標籤,透過以下指令重建標籤。

swapoff -a
mkswap -c -L SWAP-sda2 /dev/sda2

再次檢查硬碟資訊

檢查檔案系統表,確認 SWAP 是否有誤植的部分,進行修改。

再次重開機然仍失敗,懷疑可能是Kernel 或 RAM Disk 的問題。

BIOS 與 Boot Loader 及 Kernel 載入流程示意圖

檢查導引程序組態,透過以下指令查看。

cat /boot/grub.conf

透過以下指令備份與初始化 RAM Disk

cd /boot
mv initrd-2.6.32-200.13.1.el5uek.img initrd-2.6.32-200.13.1.el5uek.img.old
/sbin/mkinitrd -v /boot/initrd-2.6.32-200.13.1.el5uek.img  2.6.32-200.13.1.el5uek

該版本核心缺少 ehci-hcd 驅動 (USB 2.0 協定的晶片)

還原文件

mv initrd-2.6.32-200.13.1.el5uek.img.old initrd-2.6.32-200.13.1.el5uek.img

嘗試使用較舊的 2.6.18–274.el5xen 版本初始化看看

透過以下指令備份與初始化 RAM Disk

cd /boot
mv initrd-2.6.18-274.el5xen.img initrd-2.6.18-274.el5xen.img.old
/sbin/mkinitrd -v /boot/initrd-2.6.18-274.el5xen.img  2.6.18-274.el5xen

修改導引程序組態,並重新開機,透過以下指令修改並把 default = 0。

vi /boot/grub.conf

這次終於開機成功,未使用的網路卡會造成開機緩慢,稍後將其移除。

圖型化界面啟動失敗

查看相關錯誤資訊

再次詢問是否查看錯誤資訊

選擇重新調配圖形化介面設定

輸入 root 密碼進行設定

直接點選 OK 即可

重新啟動圖形化介面

P2V 順利完成

重新啟用與設定網卡相關資訊

啟用正確的網卡,並移除錯誤的網卡。

修正 DNS 與本機 Hosts 指向

在完成試轉作業後還需要協同系統負責人確認試轉環境是否可用,以及協調停機時間進行切換作業。

再將停機前的 Oracle Dump 進行 Import 並將 VM 快照移除,整個 Linux 的 P2V 才算完成喔。

完工的照片如下,總計 P2V 機架式伺服器共 49 台。

今天的分享就到這邊,若有遇到相同狀況的朋友不妨參考看看。

參考文件

  1. https://www.cnblogs.com/it-log/p/17097966.html
  2. https://www.netadmin.com.tw/netadmin/zh-tw/technology/69F1A4277A8947D68F504824458FF71E
  3. https://www.netadmin.com.tw/netadmin/zh-tw/technology/A9A940FDCDC24B16AACCA9AA514E068D
  4. https://www.nakivo.com/blog/vmware-p2v-linux-conversion-comprehensive-walkthrough/

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

我要留言

立即登入留言